#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<sstream>
#include<assert.h>
#include<cmath>
#include<vector>
#include<string>
#include<map>
#include<set>
#include<queue>
#include<stack>
using namespace std;
typedef long long ll;
const int inf=1000000000;
const double pi=acos(-1.0);
#define eps (1e-15)
#define L(x) ((x)<<1)
#define R(x) ((x)<<1|1)
#define see(x)(cerr<<"[line:"<<__LINE__<<" "<<#x<<" "<<x<<endl)
#define se(x) cerr<<x<<" "
template<class T>T& ls(T& a,T b)
{ if(b<a) a=b; return a;}
template<class T>T& gs(T& a,T b)
{ if(b>a) a=b; return a;}
inline int to_i(const string& s)
{int n;sscanf(s.c_str(),"%d",&n);return n;}
inline string to_s(int n)
{char buf[32];sprintf(buf,"%d",n);return string(buf);}
#define maxn  63
int n,m;
#include <cstdio>
/**********高精度加法模板*******************/
class BigInteger
{
private:
	static const int LEN = 10;
	static const int MOD = 100000000;
	int a[LEN];
	int len;
public:
	BigInteger(int x = 0)
	{
		len = 0;
		do {
		a[len++] = x % MOD;
		x /= MOD;
		} while(x != 0);
	}

	BigInteger& operator+=(const BigInteger& rhs)
	{
		int c = 0;

		for (int i = 0; i < len && i < rhs.len; i++) {
			a[i] += rhs.a[i] + c;
			if (a[i] >= MOD) {
				a[i] -= MOD;
				c = 1;
			}
			else {
				c = 0;
			}
		}
		if (len < rhs.len) {
			for (int i = len; i < rhs.len; i++) {
				a[i] = rhs.a[i] + c;
				if (a[i] >= MOD) {
					a[i] -= MOD;
					c = 1;
				}
				else {
					c = 0;
				}
			}
			len = rhs.len;
		}
		else {
			for (int i = rhs.len; c != 0 && i < len; i++) {
				++a[i];
				if (a[i] == MOD) {
					a[i] = 0;
				}
				else {
					c = 0;
				}
			}
		}
		if (c != 0) {
			a[len++] = c;
			c = 0;
		}

		return *this;
	}

	void out(FILE* fpout = stdout) const
	{
		int l = len - 1;

		fprintf(fpout, "%d", a[l--]);
		while (l >= 0)
			fprintf(fpout, "%08d", a[l--]);
	}
};

BigInteger dp[61][61][61];
/**********高精度加法模板*******************/
int main()
{
#ifndef ONLINE_JUDGE
	freopen("in","r",stdin);
#endif
    int i,j,k;
	while(scanf("%d", &n)!=EOF)
	{
		memset(dp,0,sizeof(dp));
		dp[0][0][0]=1l;
		for(i=1; i<=n; i++)
		for(j=0; j<=i; j++)
		for(k=0; k<=j; k++)
		{
			if(k>0)
			dp[i][j][k]+=dp[i][j][k-1];
			if(j>0 && j>k)
			dp[i][j][k]+=dp[i][j-1][k];
			if(i>0 && i>j)
			dp[i][j][k]+=dp[i-1][j][k];
		}
		/**********高精度加法模板*******************/
		dp[n][n][n].out();
		/**********高精度加法模板*******************/
		cout<<endl;
		cout<<endl;
	}
}
